package com.houweishi.module.leave.mapper;

import com.houweishi.module.leave.domain.OaLeave;
import com.houweishi.module.leave.domain.OaLeaveApproval;

import java.time.LocalDate;
import java.util.List;

/**
 * 请假管理Mapper接口
 * 
 * @author houweishi
 * @date 2023-02-21
 */
public interface OaLeaveMapper 
{
    /**
     * 查询请假管理
     * 
     * @param id 请假管理主键
     * @return 请假管理
     */
    public OaLeave selectOaLeaveById(Long id);

    /**
     * 查询请假管理列表
     * 
     * @param oaLeave 请假管理
     * @return 请假管理集合
     */
    public List<OaLeave> selectOaLeaveList(OaLeave oaLeave);

    /**
     * 新增请假管理
     * 
     * @param oaLeave 请假管理
     * @return 结果
     */
    public int insertOaLeave(OaLeave oaLeave);

    /**
     * 修改请假管理
     * 
     * @param oaLeave 请假管理
     * @return 结果
     */
    public int updateOaLeave(OaLeave oaLeave);

    /**
     * 删除插入的审批信息记录
     *
     * @param oaLeave 请假管理
     * @return 结果
     */
    public int deleteBizApprovalRecord(OaLeave oaLeave);
    /**
     * 删除请假管理
     * 
     * @param id 请假管理主键
     * @return 结果
     */
    public int deleteOaLeaveById(Long id);

    /**
     * 批量删除请假管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteOaLeaveByIds(Long[] ids);

    /**
     * 查询请假管理列表 (含业务表状态)
     * @param oaLeave
     * @return
     */
    List<OaLeaveApproval> selectOaLeaveApprovalList(OaLeaveApproval oaLeave);

    /**
     * 查询请假单
     * @param startDate
     * @return
     */
    List<OaLeaveApproval> selectOaLeaveListByStartDate(String startDate);

    /**
     * 查询是否有请假
     * @param time
     * @param businessStatus
     * @return
     */
    Integer selectListByTimeAndBusinessStatus(LocalDate time, String businessStatus);
}
